package fiuba.algo3.algothief.modelo;

import java.io.IOException;
import java.util.ArrayList;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;

import org.xml.sax.SAXException;

public class BuscadorDeSospechosos {
	
	private String sexo;
	private String hobby;
	private String cabello;
	private String senia;
	private String vehiculo;
	private ArrayList<Ladron> sospechosos;

	public BuscadorDeSospechosos(String sexo, String hobby, String cabello,
			String senia, String vehiculo) throws ParserConfigurationException, TransformerException, SAXException, IOException {
		this.sexo = sexo;
		this.hobby = hobby;
		this.cabello = cabello;
		this.senia = senia;
		this.vehiculo = vehiculo;
		sospechosos = new ArrayList<Ladron>();
		ListaLadrones listaDeLadrones= new ListaLadrones();
		listaDeLadrones.setearLadrones(sospechosos);
	}

	public String getSospechoso() {
		return sospechosos.get(0).getNombre();
	}

	public void compararDatos() {
		ArrayList<Ladron> sospechososAEliminar = new ArrayList<Ladron>();
		for (int i=0; (i<this.sospechosos.size()); i++){
			boolean seDebeEliminar = false;
			Ladron sospechoso = this.sospechosos.get(i);
			seDebeEliminar = this.comparar(sospechoso.getSexo(),this.sexo,seDebeEliminar);
			seDebeEliminar = this.comparar(sospechoso.getHobby(),this.hobby,seDebeEliminar);
			seDebeEliminar = this.comparar(sospechoso.getCabello(),this.cabello,seDebeEliminar);
			seDebeEliminar = this.comparar(sospechoso.getSenia(),this.senia,seDebeEliminar);
			seDebeEliminar = this.comparar(sospechoso.getVehiculo(),this.vehiculo,seDebeEliminar);
			if (seDebeEliminar == true)
				sospechososAEliminar.add(sospechoso);	
		}
		this.descartarSospechosos(sospechososAEliminar);
			
	}

	private void descartarSospechosos(ArrayList<Ladron> sospechososAEliminar) {
		for (int i=0; i<sospechososAEliminar.size();i++){
			this.sospechosos.remove(sospechososAEliminar.get(i));
		}
		
	}

	public boolean comparar(String datoSospechoso, String datoOrdenDeArresto, boolean seDebeEliminar) {
		if (!(datoSospechoso.equals(datoOrdenDeArresto)) && (seDebeEliminar == false) && (datoOrdenDeArresto != null))
			return true;
		else return seDebeEliminar;
		
	}
	
	public int cantidadSospechosos()
	{
		return sospechosos.size();
	}
}
